/**
 * 136. 只出现一次的数字
 * https://leetcode-cn.com/problems/single-number/
 */

// /**
//  * 排序
//  * @param {number[]} nums
//  * @return {number}
//  */
// function singleNumber(nums) {
//   const { length } = nums;
//   if (length < 3) return nums[0];
//   nums.sort((a, b) => a - b);
//   if (nums[0] !== nums[1]) return nums[0];
//   if (nums[length - 1] !== nums[length - 2]) return nums[length - 1];
//   const lastIndex = length - 2;
//   for (let i = 2; i < lastIndex; i += 2) {
//     if (nums[i] !== nums[i + 1]) return nums[i];
//   }
//   return 0;
// }

/**
 * 位运算
 * @param {number[]} nums
 * @return {number}
 */
function singleNumber(nums) {
  let result = 0;
  for (let i = 0; i < nums.length; i += 1) {
    result ^= nums[i];
  }
  return result;
}

console.log(singleNumber([2, 2, 1]) === 1);
console.log(singleNumber([4, 1, 2, 1, 2]) === 4);
